package com.crm.service.csd.customerManager;

import com.crm.common.model.DhPageInfo;
import com.crm.model.qo.finishOrderProductManager.FinishOrderProductQO;
import com.crm.model.vo.csd.product.ChangeCourseRecordVO;
import com.crm.model.vo.customerContractManager.CustomerChangeCourseRecordVO;
import com.crm.model.vo.exchangeProductsRecord.ExchangeProductsRecordVO;
import com.crm.model.vo.exchangeProductsRecord.ProductExchangeFormVO;
import com.crm.model.vo.exchangeProductsRecord.ProductExchangeaApprovalVO;
import com.crm.model.vo.finishOrderProduct.FinishOrderProductVO;
import com.crm.model.vo.productManager.CustomerMemberProductVO;
import com.crm.model.vo.productManager.CustomerProductVO;

import java.util.Date;
import java.util.List;

/**
 * @author wangpeng
 * @Date 2021/9/1 13:51
 */
public interface ProductDetailsDbService {

    /**
     * selectProductDetailsList
     *   产品管理 --产品明细
     * @Author wangpeng
     * @Date 2021/9/1
     * @param order
     * @param qo
     * @param dateUnit
     * @return
     */
    List<FinishOrderProductVO> selectProductDetailsList(String order, FinishOrderProductQO qo, Integer dateUnit,String contractOtherType);

    /**
     * selectCustomerMemberProductList
     * 产品管理--产品明细--会员高级筛选
     * @Author wangpeng
     * @Date 2021/9/2
     * @param productStatus
     * @return
     */
    List<CustomerMemberProductVO> selectCustomerMemberProductList(Integer productStatus);

    /**
     * selectCustomerProductList
     * 产品管理--产品明细--非会员高级筛选
     * @Author wangpeng
     * @Date 2021/9/3
     * @param shelfStatus	
     * @return
     */
    List<CustomerProductVO> selectCustomerProductList(Integer shelfStatus);

    /**
     * selectChangeCourseCecordList
     * @Author wangpeng
     * @Date 2021/10/22
     * @param order
     * @return
     */
    List<CustomerChangeCourseRecordVO> selectChangeCourseCecordList(String order, ChangeCourseRecordVO vo);

    CustomerChangeCourseRecordVO selectChangeCourseCecordById(String changeCourseId);

    void updateChangeCourseCecord(String changeCourseId, String examine, String remarks, String accountId, Date date,String xcch,String hyhsycs);

    List<ChangeCourseRecordVO> selectChangeCourseCecordRuleNumber();

    List<CustomerChangeCourseRecordVO> selectExchangeCenterList(String order, ChangeCourseRecordVO vo, String accountId);

    List<CustomerChangeCourseRecordVO> selectExamineAndApproveList(String finishOrderProductId);

    ChangeCourseRecordVO selectExchangeDetails(String changeCourseId);

    CustomerChangeCourseRecordVO selectViewDetails(String changeCourseId);

    List<FinishOrderProductVO> selectExchangeOrderProductList(String order, String orderNumber,String accountId);

    List<FinishOrderProductVO> selectExchangeOrderProductByorderNumber(String orderNumber,String accountId);

    void addExchangeProductsRecord(ExchangeProductsRecordVO vo);

    void addProductExchangeApproval(ProductExchangeaApprovalVO vo);

    List<ProductExchangeaApprovalVO> selectProductExchangeApprovalList(String order);

    void updateProductExchangeApproval(String productExchangeApprovalId,String approvalStatus, Date date,String approvalRemarks,String accountId);

    List<ExchangeProductsRecordVO> selectProductExchangeApprovalByExchangeNumber(String exchangeNumber);

    void updateFinishOrderProduct(String finishOrderProductId);

    void addProductExchangeform(ProductExchangeFormVO vo);

    List<ProductExchangeFormVO> selectProductExchangeFormList(String orderNumber,String accountId);

    List<ExchangeProductsRecordVO> selectProductExchangeApprovalByType(String exchangeNumber);

    List<ProductExchangeaApprovalVO> selectProductExchangeApprovaLByOrderNumber(String orderNumber);

    void updateProductExchangeForm(String orderNumber);

    void deleteProductExchangeFormByProductExchangeId(String productExchangeId);

    void updateExchangeProductsRecord(String exchangeNumber, String type);

    void deleteRroductExchangeForm(String productExchangeId);

    List<CustomerProductVO> selectExchangeCustomerProductList(String productName);

    List<CustomerMemberProductVO> selectExchangeCustomerMemberProductList(String memberCardName);

    ProductExchangeaApprovalVO selectApprovedform(String productExchangeApprovalId);
}
